home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / lisp / eulisp / mpfeel.lha / MPFeel / Modules / scheme.em~ < prev    next >
Lisp/Scheme  |  1992-10-06  |  2KB  |  81 lines

  1. ; Full Scheme
  2.  
  3. (defmodule scheme (schemedefs
  4.            ;prettyprint
  5.            ;trace
  6.            ) ()
  7.   
  8.   (expose
  9.     
  10.     schemedefs
  11.  
  12.   )
  13.  
  14.   (export
  15.     
  16.     require
  17.     eval
  18.     load scheme:load
  19.  
  20.     slib:load require provided?
  21.     slib:form-feed
  22.     slib:tab
  23.     force-output
  24.     slib:error
  25.  
  26.   )
  27.  
  28.   (defmacro eval (form)
  29.     `(eval/cm ,form))
  30.  
  31.   (defmacro load (file)
  32.     `(scheme:load ,file eval/cm))
  33.  
  34.   (defun scheme:load (filename eval) 
  35.     (eval-forms-in-stream 
  36.       (open-unschemed-input-file filename)
  37.       eval))
  38.  
  39.   (defun eval-forms-in-stream (port eval)
  40.      (let ((form (read port)))
  41.           (cond ((eof-object? form) (close-input-port port) t)
  42.             (t (eval form) (eval-forms-in-stream port eval)))))
  43.  
  44.   ;; Hack for slib code...
  45.  
  46.   (defmacro slib:load (file)
  47.     `(load 
  48.        (string-append
  49.          (string-append "/net/brad/denton_export/SCM/Lib1.8/" ,file)
  50.          ".scm")))
  51.  
  52.   (defun require stuff
  53.     (display "required: ") (display stuff)
  54.     (newline)
  55.     stuff)
  56.  
  57.   (defun provided? (thing)
  58.     (case thing
  59.       ((inexact) *false*)
  60.       (else *false*)))
  61.  
  62.   ;; The form feed character.
  63.   (define slib:form-feed (integer->char 12))
  64.  
  65.   ;; The tabulator character.
  66.   (define slib:tab (integer->char 9))
  67.  
  68.   ;; Flushes an output port (format:force-output output-port).
  69.   (define (force-output port) *true*)
  70.  
  71.   ;; A null argument closure to jump to the interpreters toplevel continuation;
  72.   ;; format:abort may return and in this case the format returns properly
  73.   ;; and returns #f.
  74.   (define (slib:error . stuff)
  75.     (display "slib error: ") (display stuff)
  76.     (newline)
  77.     ('slib:error))
  78.  
  79. )
  80.  
  81.